package com.hua.base;

public class Demo05 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte) i;
        System.out.println(i); //128
        System.out.println(b); //-128  强制类型转换（高到低），内存溢出了
        //自动类型转换，低到高
        double c = i;
        System.out.println(c);
        /*
        注意：
        1、它不能对布尔值进行转换
        2、不能将对象类型转换为不相干的类型；
        3、把高容量转换到低容量的时候要强制类型转换，反之自动类型转换；
        4、转换的时候可能存在内存溢出，或者精度丢失的问题；

         */

        double aa = 3.1415925654433;
        float cc = (float) aa;
        System.out.println(aa);
        System.out.println(cc);//精度丢失了
        System.out.println("==========================");
        char cc1 = 'a';
        int d = cc1+1; //低到高，自动转换
        System.out.println(d);
        System.out.println((char) d);

        System.out.println("===========================");
        //操作比较大的数的时候，注意溢出问题，要在计算的时候变为long类型
        int money = 10_0000_0000;
        int year = 20 ;
        int total = money * year; //
        System.out.println(total); //计算溢出了
        long total1 = money * year; //转换之前就是int类型在计算，存在问题；
        System.out.println(total1);
        long total2 = money * (long) year; //这时候就用得long类型计算了
        System.out.println(total2);

    }

}
